package com.white.commonlib.engine.img;

import android.graphics.Bitmap;
import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.widget.ImageView;


import java.io.File;

/**
 * Created by ytf on 2017/3/20 020.
 * Description: 图片显示接口的抽取，待更新
 */

public interface IImageLoader
{
    void init();

    /***
     * 根据网络地址后者图片绝对路径显示一张图片
     * @param urlOrPath 图片地址或路径
     * @param iv        imageview
     * @param holder    正在加载时的图片
     * @param error     加载错误的覆盖图片
     */
    void displayImage(@NonNull String urlOrPath, @NonNull ImageView iv, @DrawableRes int holder, @DrawableRes int error);

    /***
     * 根据图片文件显示一张图片
     * @param imgFile   图片文件
     * @param iv        imageview
     * @param holder    正在加载时的图片
     * @param error     加载错误的覆盖图片
     */
    void displayImage(@NonNull File imgFile, @NonNull ImageView iv, @DrawableRes int holder, @DrawableRes int error);

    /***
     * 根据图片字节数组显示一张图片
     * @param rawData   图片文件
     * @param iv        imageview
     * @param holder    正在加载时的图片
     * @param error     加载错误的覆盖图片
     */
    void displayImage(@NonNull byte[] rawData, @NonNull ImageView iv, @DrawableRes int holder, @DrawableRes int error);

    /***
     * 根据地址解析出一张图片
     * @param   url     图片地址
     * @param   height  解析高度
     * @param   width   解析宽度
     * @param   cacheEnable   是否需要缓存
     * @return  callback 结果回调
     */
    void decodeImage(@NonNull String url, int height, int width, final boolean cacheEnable, OnDecodeResultCallback callback);

    /***
     *
     * @param url           图片地址
     * @param cacheEnable  是否需要缓存
     * @param callback      结果回调
     */
    public void decodeImage(@NonNull final String url, final boolean cacheEnable, final OnDecodeResultCallback callback);

    public interface OnDecodeResultCallback
    {
        void onComlete(Bitmap bmp);

        void onFailed(String e);
    }
}
